#ifndef __TYPEDATA_H
#define __TYPEDATA_H

#include <stdint.h>

/***********************************************************************************************************************/
/*直流电机参数设定*/
#define tire_radius_cm_default  				2.40f		//轮 胎半径，单位为cm
#define pulse_cnt_per_circle_default  			1060 		// 实际轮子转动一周的脉冲数量 530 1080 40750
#define servo_median_value1_default   			1525  		// 舵机1机械中值
#define servo_median_value2_default 1525                    // 舵机2机械中值

/*直流电机参数配置*/
typedef struct
{
	int8_t left_encoder_dir_config,		right_encoder_dir_config;	//编码器方向配置
	int8_t left_motion_dir_config,		right_motion_dir_config; 	//电机运动方向配置
	float wheel_radius_cm;				           					//轮胎半径,单位为cm
	uint16_t pulse_num_per_circle;		                			//轮胎转动一圈累计的脉冲数量
	uint16_t servo_median_value1,		servo_median_value2;		//舵机机械中值
}motor_config;

/*编码器参数获取*/
typedef struct
{
	int32_t left_motor_cnt,			right_motor_cnt;		//单个采样周期内的脉冲数量
	float left_motor_dir,			right_motor_dir; 		//运动方向
	float left_motor_speed_rpm,		right_motor_speed_rpm;	//转速单位转每分钟转1多少圈
	float left_motor_speed_cmps,	right_motor_speed_cmps;	//转速c单位为cm/s，每秒走了多少路
	float left_motor_gyro_rps,		right_motor_gyro_rps;	//转速单位rad/s	每秒转多少弧度
	float left_motor_period_ms,		right_motor_period_ms;	//上一次测量和这一次测量所用的时间
	
	int32_t left_motor_total_cnt,	right_motor_total_cnt;	//左右电机脉冲记录总数
    int32_t left_motor_location_cnt, right_motor_location_cnt;    //左右电机的当前位置脉冲
	int32_t left_motor_period_cnt,	right_motor_period_cnt;	
	uint8_t left_motor_cnt_clear,	right_motor_cnt_clear;	//清除电机记录的脉冲数
	
}encoder;

/***********************************************************************************************************************/

typedef struct{
    float Servos_x;
    float Servos_y;
} _ctrl;

typedef struct
{
    int16_t sPid_X_Out;
    int16_t sPid_Y_Out;
    
} _obtain;

typedef struct
{
    float x;
    float y;
    float z;
}Vector3f;

typedef struct
{
    Vector3f gyro_raw;
    Vector3f accel_raw;
    float temperature;
    float roll; //横滚角
    float pitch;//俯仰角
}Sensor;

#endif 
